home *** CD-ROM | disk | FTP | other *** search
/ Aminet 49 / Aminet 49 (2002)(GTI - Schatztruhe)[!][Jun 2002].iso / Aminet / util / misc / LC2.lha / src / LC2s.BAS < prev   
BASIC Source File  |  2001-07-30  |  38KB  |  884 lines

  1.  
  2.  
  3. REM LOTTO CHECK version 2.0  Copy-right 1997 Lorence Lombardo.
  4.  
  5. REM lory@subdimension.com
  6.  
  7.  
  8. REM This program is Free software; you can redistribute it and/or modify
  9. REM it under the terms of the GNU General Public License as published by
  10. REM the Free Software Foundation; either version 2 of the License, or
  11. REM (at your option) any later version.
  12.  
  13. REM This program is distributed in the hope that it will be useful,
  14. REM but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. REM MERCHANTABILITY OR FITNESS For A PARTICULAR PURPOSE.  See the
  16. REM GNU General Public License For more details.
  17.  
  18. REM You should have received a copy of the GNU General Public License
  19. REM along with this program; if not, write to the Free Software
  20. REM Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  
  22.  
  23.  
  24.  
  25.  
  26. CLEAR : DEFINT A-Z: ON ERROR GOTO TERROR
  27. FCH$ = "LOTTO CHECK (C) 1994  Lorence Lombardo."
  28. FCH2$ = "LOTTO CHECK (C) 1997  Lorence Lombardo."
  29. PR$ = "LPT1:": LF$ = CHR$(10) + CHR$(13)
  30. REM **********D( T ,N, L )**** ticket,number,line ****
  31. REM NX=system       GT= Games/ticket
  32. TMX = 90: DIM D(TMX + 1, 25, 12), X$(TMX + 1), NX(TMX + 1), GT(TMX + 1), N(20), R(25), WN(25, 12), WL(12), K(7), E$(14), NC(45), WT(TMX), WTL(TMX, 12)
  33. DEF SEG = 0: KF = PEEK(1047): POKE 1047, 0: GOSUB KEYDEF
  34. MD$ = "": Z = 0: V = 0: SC = 1: N$ = "LC-DEF.DAT": ST = 1: GOSUB TLD
  35. IF ST = 2 THEN P$ = "O": GOTO OPTIONS
  36. ttop:
  37. ST = 0: RR$ = "": FOR NN = 1 TO 8: N(NN) = 0: NEXT: NR = 0: M = 0: D = 0: B$ = "": XX2 = 8
  38. WIDTH 40: GOSUB TITLE
  39. DO
  40.    NR = NR + 1: G = NR: N1$ = "  LOTTO ": IF MD$ = "4" THEN N1$ = "  KENO "
  41.    IF NR > 6 AND MD$ <> "4" THEN RR$ = "SUPPLEMENTARY ": G = NR - 6
  42.    GN$ = STR$(G): IF MD$ = "2" AND NR = 6 THEN GN$ = "": RR$ = "POWER-BALL "
  43.    NR$ = N1$ + RR$ + "NUMBER" + GN$ + " IS"
  44. TASK:
  45.    NRCH = 0: PRINT NR$: INPUT P$: PRINT
  46.    N(NR) = VAL(P$): IF UCASE$(P$) = "O" THEN P$ = "O": GOTO OPTIONS
  47.    IF UCASE$(P$) = "Q" THEN GOTO TEND
  48.    IF MD$ = "1" AND N(7) = 0 AND NR = 7 THEN NR = 6: EXIT DO
  49.    IF N(NR) < 1 OR N(NR) > GDMX THEN
  50.       BEEP: COLOR 4: PRINT " 1 TO"; GDMX; "ONLY MATE !!!": COLOR 7: PRINT : GOTO TASK
  51.    END IF
  52.    IF MD$ = "2" AND NR < 6 THEN GOSUB NCHECK
  53.    IF MD$ <> "2" THEN GOSUB NCHECK
  54.    IF NRCH = 1 THEN BEEP: COLOR 4: PRINT " YOU'VE ALREADY GOT THIS NUMBER MATE !!!": PRINT : COLOR 7: GOTO TASK
  55.    
  56.    IF MD$ = "1" AND NR = 8 THEN EXIT DO
  57.    IF MD$ = "2" AND NR = 6 THEN EXIT DO
  58.    IF MD$ = "3" AND NR = 7 THEN EXIT DO
  59.    IF MD$ = "4" AND NR = 20 THEN EXIT DO
  60. LOOP
  61. IF MD$ = "4" THEN WIDTH 80: SC = 2: XX2 = 26
  62. GOSUB TITLE: GOSUB NUMS: COLOR 6
  63. PRINT "ARE YOU SURE THESE NUMBERS ARE CORRECT ?              (Y/N/O)": COLOR 2
  64. DO: B$ = UCASE$(INKEY$): IF B$ = "N" THEN GOTO ttop
  65.    IF B$ = "Y" THEN GOTO TSHW
  66.    IF B$ = "O" THEN GOTO OPTIONS
  67.    IF B$ = "Q" THEN GOTO TEND
  68. LOOP
  69. NCHECK:
  70. FOR I = 1 TO NR: IF I <> NR AND N(NR) = N(I) THEN NRCH = 1
  71. NEXT: RETURN
  72. REM **************************** CHECKER **************************
  73. TSHW: T = 0
  74. DO: T = T + 1
  75.    IF V = 87 THEN LOCATE 20, XX2: COLOR 4: PRINT "      SCANNING TICKETS      "
  76. TTSHOW:
  77.    SUSS = NX(T): GOSUB SYSUSS
  78.    IF V <> 87 THEN
  79.       SP = 4: SP$ = " ": IF MD$ = "1" OR MD$ = "3" THEN GOSUB MD1SC
  80.       IF MD$ = "2" THEN GOSUB MD2SC
  81.       CLS : GOSUB NUMS: COLOR 7: XX2 = 8: IF SC = 2 THEN XX2 = 26
  82.       PRINT SPC(XX2); X$(T) + SYS$ + " TICKET" + STR$(T): PRINT : COLOR 4
  83.       IF MD$ = "1" OR MD$ = "3" THEN PRINT SPACE$(NX(T) * SP + 7); "No's "; : COLOR 2
  84.       IF MD$ = "2" THEN
  85.          COLOR 5: PRINT SPACE$(NX(T) * SP + 2); "PB ";
  86.          IF NX(T) < 23 THEN COLOR 4: PRINT "    No's";
  87.       END IF
  88.       IF MD$ = "4" THEN COLOR 2: PRINT SPACE$(48); "Spot"; : COLOR 4: PRINT "    No's"
  89.       IF NR = 8 OR NR = 7 THEN PRINT "Sups"
  90.       IF NR = 6 THEN PRINT
  91.       PRINT
  92.    END IF
  93. ANAL: WW = 0
  94.    FOR L = 1 TO GT(T): COLOR 9
  95.       IF V <> 87 THEN PRINT " "; CHR$(64 + L); " "; : COLOR 7
  96.       FOR N = 1 TO NX(T): WN(N, L) = 0
  97.          IF MD$ = "1" OR MD$ = "3" THEN GOSUB MD1
  98.          IF MD$ = "2" THEN GOSUB MD2
  99.          IF MD$ = "4" THEN M4 = D(T, 11, L): IF N <= M4 THEN GOSUB MD2
  100.  
  101.          IF V <> 87 THEN
  102.             IF MD$ = "4" THEN SP$ = " ": IF D(T, N, L) = 0 THEN SP$ = "-"
  103.             IF D(T, N, L) < 10 THEN PRINT " ";
  104.             IF D(T, N, L) > 0 THEN PRINT SP$; STR$(D(T, N, L)); : COLOR 7
  105.             IF D(T, N, L) = 0 THEN PRINT "  "; SP$;
  106.             IF MD$ = "2" AND N = NX(T) - 1 THEN COLOR 5: PRINT " ";
  107.             IF MD$ = "4" AND N = NX(T) - 1 THEN COLOR 2: PRINT "   -";
  108.          END IF
  109.       NEXT N
  110.       WL(L) = 0: IF MD$ = "1" OR MD$ = "3" THEN GOSUB MD1CHK
  111.       IF MD$ = "2" THEN GOSUB MD2CHK
  112.       IF MD$ = "4" THEN GOSUB MD4CHK
  113.       IF V <> 87 AND WL(L) = 1 THEN
  114.          IF NX(T) < 23 THEN PRINT " "; : COLOR 30, 6: PRINT " $$ ";
  115.          XXX = POS(0): LOCATE , 2: COLOR 30, 0: PRINT CHR$(64 + L);
  116.          LOCATE , XXX
  117.       ELSE
  118.          IF V <> 87 THEN IF NX(T) < 23 THEN PRINT "     ";
  119.       END IF
  120.       IF V <> 87 THEN
  121.          IF M = 0 AND MD$ <> "2" THEN PRINT "   ";
  122.          IF M > 0 AND NX(T) < 23 THEN COLOR 4: PRINT M;
  123.          IF D > 0 AND MD$ <> "2" THEN COLOR 2: PRINT " "; D;
  124.       COLOR 7: PRINT
  125.       END IF: M = 0: D = 0
  126.    NEXT L
  127.    IF WW = 1 AND V <> 87 THEN
  128.       LOCATE 5, 5: COLOR 31, 6: PRINT " WINNER !!! ": COLOR , 0
  129.       FOR W = 1 TO 5: BEEP: NEXT W: TTT = T
  130.    END IF
  131.    IF Z$ = "-" AND V = 87 AND WW = 0 THEN
  132.       IF T > 1 THEN T = T - 1: GOTO TTSHOW
  133.       IF T = 1 THEN Z$ = "": V = 99: T = TTT: BEEP: LOCATE 20, 25: PRINT SPACE$(25)
  134.    END IF
  135.    IF V <> 87 THEN
  136.       LOCATE 21, XX2 + 3: COLOR 5: PRINT "- "; : COLOR 6: PRINT "previous  "; : COLOR 5
  137.       PRINT "Space "; : COLOR 6: PRINT "next": COLOR 5
  138.       LOCATE 22, XX2 + 2: PRINT "R "; : COLOR 6: PRINT "reset  "; : COLOR 5: PRINT "F ";
  139.       COLOR 6: PRINT "first  "; : COLOR 5: PRINT "L "; : COLOR 6: PRINT "last": COLOR 5
  140.       LOCATE 23, XX2: PRINT "G "; : COLOR 6: PRINT "goto  "; : COLOR 5: PRINT "P ";
  141.       COLOR 6: PRINT "print wins  "; : COLOR 5: PRINT "Q "; : COLOR 6: PRINT "quit"
  142.    END IF
  143.    IF V = 87 OR V = 99 THEN
  144.       IF T = TT THEN
  145.          IF WW = 0 OR V = 99 THEN COLOR 4: LOCATE 20, 31: BEEP: PRINT "ALL TICKETS SCANNED"
  146.          IF WW = 0 THEN T = TTT: V = 99
  147.       END IF
  148.    END IF
  149.    DO: IF V = 87 THEN EXIT DO
  150.       Z$ = UCASE$(INKEY$): IF Z$ = " " AND T <> TT THEN EXIT DO:
  151.       IF Z$ = "-" AND T > 1 THEN
  152.          IF V = 99 THEN V = 87
  153.          IF V = 87 THEN LOCATE 20, 30: COLOR 4: PRINT "       BACK SCAN       "
  154.          T = T - 1: GOTO TTSHOW
  155.       END IF
  156.       IF Z$ = "L" AND T < TT THEN T = TT: GOTO TTSHOW
  157.       IF Z$ = "F" AND T > 1 THEN
  158.          IF V = 99 THEN V = 87
  159.          GOTO TSHW
  160.       END IF
  161.       IF Z$ = "R" OR Z$ = CHR$(27) THEN V = 0: GOTO ttop
  162.       IF Z$ = "P" AND WW = 1 THEN GOSUB WPRINT
  163.       IF Z$ = "G" THEN
  164.          IF V = 87 THEN V = 99
  165.          TTT = T: CLS : GOSUB TGOT: GOTO TTSHOW
  166.       END IF
  167.       IF Z$ = "Q" THEN GOTO TEND
  168.    LOOP: IF V = 87 AND WW = 1 THEN V = 99: GOTO TTSHOW
  169.    IF V = 99 THEN V = 87
  170. LOOP
  171. TITLE:
  172. CLS : COLOR 7, 5: PRINT "        LOTTO CHECK  version 2.0b              (C) 1997  Lorence Lombardo.      "
  173. IF B$ <> "O" AND P$ <> "O" AND XX2 <> 26 THEN COLOR 0, 15: PRINT : PRINT " Enter 'O' for options and 'Q' to quit. "
  174. COLOR 7, 0: PRINT : RETURN
  175. NUMS:
  176. COLOR 4: PRINT " "; : FOR NN = 1 TO NR
  177.    IF MD$ <> "4" AND NN > 6 THEN COLOR 2
  178.    IF MD$ = "2" AND NN = NR THEN COLOR 2
  179.    PRINT STR$(N(NN)); : IF MD$ <> "4" AND NN < NR THEN PRINT " -";
  180. NEXT: PRINT : PRINT : RETURN
  181.  
  182. MD1:
  183. FOR NN = 1 TO NR
  184.    IF N(NN) = D(T, N, L) AND NN < 7 THEN COLOR 4: M = M + 1: WN(N, L) = 1
  185.    IF N(NN) = D(T, N, L) AND NN > 6 THEN COLOR 2: D = D + 1: WN(N, L) = 2
  186. NEXT NN: RETURN
  187. MD1CHK:
  188. MM = M: IF NX(T) < 6 THEN MM = M + 6 - NX(T)
  189. IF NR = 8 OR NR = 7 THEN IF MM = 3 AND D > 0 OR MM > 3 THEN WW = 1: WL(L) = 1
  190. IF NR = 6 AND MM = 6 THEN WW = 1: WL(L) = 1
  191. RETURN
  192. MD1SC:
  193. IF NX(T) > 6 AND NX(T) < 9 OR NX(T) > 15 THEN SP$ = "": SP = 3
  194. IF NX(T) > 8 AND SC <> 2 THEN SC = 2: WIDTH 80
  195. IF NX(T) < 9 AND SC <> 1 THEN SC = 1: WIDTH 40
  196. RETURN
  197.  
  198. MD2:
  199. FOR NN = 1 TO NR
  200.    IF N(NN) = D(T, N, L) AND N <> NX(T) AND NN <> NR THEN COLOR 4: M = M + 1: WN(N, L) = 1
  201.    IF N(NN) = D(T, N, L) AND N = NX(T) AND NN = NR THEN COLOR 2: D = D + 1: WN(N, L) = 1
  202. NEXT NN: RETURN
  203. MD2CHK:
  204. MM = M: IF NX(T) < 6 THEN MM = M + 6 - NX(T)
  205. IF MM = 2 AND D > 0 OR MM > 2 THEN WW = 1: WL(L) = 1
  206. RETURN
  207. MD2SC:
  208. IF NX(T) > 6 AND NX(T) < 10 OR NX(T) > 16 THEN SP$ = "": SP = 3
  209. IF NX(T) > 9 AND SC <> 2 THEN SC = 2: WIDTH 80
  210. IF NX(T) < 10 AND SC <> 1 THEN SC = 1: WIDTH 40
  211. RETURN
  212.  
  213. MD4:
  214. FOR NN = 1 TO NR
  215.    IF N(NN) = D(T, N, L) THEN COLOR 4: M = M + 1: WN(N, L) = 1
  216. NEXT NN: RETURN
  217. MD4CHK:
  218. IF M4 = 10 THEN IF M = 0 OR M > 6 THEN WW = 1: WL(L) = 1
  219. IF M4 = 9 OR M4 = 8 THEN IF M > 5 THEN WW = 1: WL(L) = 1
  220. IF M4 = 7 OR M4 = 6 THEN IF M > 4 THEN WW = 1: WL(L) = 1
  221. IF M4 = 5 AND M > 3 THEN WW = 1: WL(L) = 1
  222. IF M4 = 4 AND M > 2 THEN WW = 1: WL(L) = 1
  223. IF M4 = 3 AND M > 1 THEN WW = 1: WL(L) = 1
  224. RETURN
  225.  
  226. SYSUSS:
  227. SYS$ = " standard": SY = 0: IF MD$ = "2" THEN SY = 1
  228. SY$ = STR$(SUSS - SY): IF MD$ <> "2" AND SUSS < 6 THEN SYS$ = " take" + SY$
  229. IF MD$ <> "2" AND SUSS > 6 THEN SYS$ = " system" + SY$
  230. IF MD$ = "2" AND SUSS <> 6 THEN SYS$ = " PowerPlay" + SY$
  231. IF MD$ = "4" THEN SYS$ = " keno"
  232. RETURN
  233.  
  234. REM ********************************* WIN PRINT *****************************
  235. WPRINT:
  236. OPEN PR$ FOR OUTPUT AS 1
  237. PRINT #1, X$(T); SYS$; " ticket"; T
  238. SPP$ = " ": IF NX(T) = 20 THEN SPP$ = ""
  239. FOR L = 1 TO GT(T)
  240.    IF WL(L) = 1 THEN
  241.       PRINT #1, "  "; CHR$(64 + L); "  ";
  242.       FOR N = 1 TO NX(T)
  243.          IF WN(N, L) = 0 THEN WP$ = " --"
  244.          IF MD$ = "4" AND N > D(T, 11, L) THEN WP$ = "   "
  245.          IF WN(N, L) > 0 THEN
  246.             IF D(T, N, L) < 10 THEN WP$ = " " + STR$(D(T, N, L))
  247.             IF D(T, N, L) > 9 THEN WP$ = STR$(D(T, N, L))
  248.          END IF
  249.          PRINT #1, WP$; SPP$;
  250.          IF MD$ = "2" AND N = NX(T) - 1 THEN PRINT #1, "  PB";
  251.          IF MD$ = "4" AND N = NX(T) - 1 THEN PRINT #1, "  Spot"; D(T, 11, L)
  252.       NEXT N: PRINT #1, "": PRINT #1, "     ";
  253.       FOR N = 1 TO NX(T)
  254.          IF WN(N, L) = 2 THEN PRINT #1, " ~~"; SPP$;  ELSE PRINT #1, "   "; SPP$;
  255.       NEXT N: PRINT #1, ""
  256.    END IF
  257. NEXT L: PRINT #1, "": CLOSE #1: BEEP: RETURN
  258. REM **************************** OPTIONS ************************************
  259. OPTIONS:
  260. WIDTH 40: ST = 0: GOSUB TITLE: COLOR 0, 15: PRINT "              OPTIONS MENU              ": COLOR 2, 0
  261. LOCATE 7, 8: COLOR 4: PRINT "L "; : COLOR 2: PRINT "Load a new data file"
  262. LOCATE 9, 8: COLOR 4: PRINT "E "; : COLOR 2: PRINT "Ticket editor"
  263. LOCATE 11, 8: COLOR 4: PRINT "R "; : COLOR 2: PRINT "Create random tickets"
  264. LOCATE 13, 8: COLOR 4: PRINT "C "; : COLOR 2: PRINT "Return to checker"
  265. LOCATE 15, 8: COLOR 4: PRINT "W "; : COLOR 2: PRINT "Show winning tickets only"
  266. LOCATE 18, 8: COLOR 5: PRINT "A "; : COLOR 2: PRINT "About   "; : COLOR 5: PRINT "Q "; : COLOR 2: PRINT "Quit"
  267. ask1: V$ = UCASE$(INKEY$): IF V$ = "" THEN GOTO ask1
  268.    V = ASC(V$)
  269.    IF V = 69 THEN GOTO TSCREEN
  270.    IF V = 76 THEN KA = 2: WIDTH 80: GOSUB TL1: WIDTH 40: IF N$ <> "" THEN GOTO SUSS ELSE GOTO OPTIONS
  271.    IF V$ = "R" THEN CLS : GOTO TRANDOM: REM V=82
  272.    IF V = 67 OR V = 27 THEN GOTO SUSS
  273.    IF V = 81 THEN GOTO TEND
  274.    IF V = 87 THEN GOTO SUSS
  275.    IF V = 65 THEN GOTO ABOUT
  276. GOTO ask1
  277. SUSS:
  278. ER$ = "check..!!"
  279. IF TT = 0 THEN
  280.    BEEP: CLS : LOCATE 12, 12: COLOR 4: PRINT "Nothing to "; ER$
  281.    GOSUB PAUSE: GOTO OPTIONS
  282. END IF
  283. IF P$ = "O" THEN P$ = "": GOTO ttop
  284. IF B$ = "O" THEN B$ = "": GOTO TSHW
  285. REM ****************************** RANDOM **********************************
  286. TRANDOM:
  287. IF MD$ = "" THEN MD$ = "1": GOSUB TLIMITS
  288. COLOR 7: INPUT "  How many tickets "; GG: COLOR 4
  289. IF GG > TMX THEN BEEP: PRINT "  No more than"; TMX: PRINT : GOTO TRANDOM
  290. IF GG < 1 THEN GOTO OPTIONS
  291. CLS : LOCATE 12, 12: PRINT "Creating tickets.": GOSUB TEDIT: TT = GG
  292. FOR T = 1 TO TT: GT(T) = GPT: NX(T) = 6: GOSUB TTRND: NEXT T
  293. BEEP: GOTO TSCREEN
  294. TTRND:
  295. X$(T) = "RANDOM": FOR L = 1 TO GT(T): GOSUB RGAME: NEXT L: RETURN
  296. RGAME:
  297. RMX = NX(T): IF MD$ = "4" THEN RMX = D(T, 11, L): IF RMX < 3 THEN RMX = 3: D(T, 11, L) = 3
  298. FOR R = 1 TO RMX
  299. TRND:
  300.    RDCH = 0: RANDOMIZE TIMER: R(R) = (RND * (GDMX - 1)) + 1
  301.    IF MD$ = "2" AND R <> NX(T) THEN GOSUB RDCHECK
  302.    IF MD$ <> "2" THEN GOSUB RDCHECK
  303.    IF RDCH = 1 THEN GOTO TRND
  304. NEXT R: GOSUB RSORT: RETURN
  305. RDCHECK:
  306. FOR S = 1 TO R: IF S <> R AND R(R) = R(S) THEN RDCH = 1
  307. NEXT S: RETURN
  308.  
  309. REM ****************************** EDITOR **********************************
  310. TEDIT:
  311. FOR T = 1 TO TT: TZ = T: GOSUB TZERO: NX(T) = 0: GT(T) = 0: NEXT T
  312. IF KA = 2 THEN RETURN
  313. N = 1: L = 1: TT = 0: IF V = 82 THEN RETURN
  314. TSCREEN:
  315. IF MD$ = "" THEN MD$ = "1"
  316. WIDTH 80: Z4 = 0: T = 1: IF TT = 0 THEN TT = 1
  317. GOSUB LAYOUT: GOSUB TICKET
  318. MAIN:
  319. V = 0: Z = 0: Z3 = 0: Z2 = PEEK(1047)
  320. FOR CR = 0 TO 7: IF Z2 = K(CR) + 4 THEN Z3 = 2
  321.     IF Z2 = K(CR) + 8 OR Z2 = K(CR) + 12 THEN Z3 = 1
  322. NEXT CR
  323. IF Z3 = 1 AND Z4 = 2 AND MD$ <> "2" THEN GOSUB BLANK: GOSUB ALT
  324. IF Z3 = 2 AND Z4 = 1 AND MD$ <> "2" THEN GOSUB BLANK: GOSUB CTRL
  325. A$ = UCASE$(INKEY$): IF A$ = "" THEN GOTO PSY
  326. Z = ASC(A$)
  327. REM **** AN ARROW ****
  328. IF A$ = U$ OR A$ = D$ OR A$ = L$ OR A$ = R$ THEN
  329.    GOSUB DCHECK
  330.    IF DCH = 0 THEN
  331.  
  332.       C$ = "-": IF MD$ = "2" OR MD$ = "4" THEN IF N = NX(T) THEN C$ = "="
  333.       C = 3: GOSUB POSY
  334.       
  335.       IF A$ = D$ THEN L = L + 1: IF L > GT(T) THEN L = 1
  336.  
  337.       IF A$ = U$ THEN L = L - 1: IF L < 1 THEN L = GT(T)
  338.  
  339.       IF A$ = R$ THEN N = N + 1: IF N > NX(T) THEN N = 1
  340.       IF MD$ = "4" AND N > D(T, 11, L) THEN N = 11
  341.  
  342.       IF A$ = L$ THEN
  343.          IF MD$ = "4" AND N = 11 THEN N = D(T, 11, L) ELSE N = N - 1
  344.          IF N < 1 THEN N = NX(T)
  345.       END IF
  346.  
  347.    END IF
  348. END IF
  349. REM *** A NUMBER ***
  350. IF Z > 47 AND Z < 58 THEN
  351.    IF D(T, N, L) > 0 THEN
  352.       X = -1: C$ = STR$(D(T, N, L)) + A$
  353.       NVL = GDMX + 1: IF MD$ = "4" AND N = 11 THEN NVL = 11
  354.       IF VAL(C$) < NVL THEN GOSUB NUM: D(T, N, L) = VAL(C$)
  355.    END IF
  356.    IF D(T, N, L) = 0 THEN
  357.       D(T, N, L) = VAL(A$): C$ = A$: X = 1
  358.       IF D(T, N, L) > 0 THEN GOSUB NUM
  359.    END IF
  360. END IF
  361. IF A$ = DL$ OR Z = 8 THEN
  362.    Y = -1: C = 7: X = 1
  363.    IF D(T, N, L) < 10 THEN C$ = " ": GOSUB NUM: D(T, N, L) = 0
  364.    IF D(T, N, L) > 9 THEN
  365.       C$ = " " + LEFT$(STR$(D(T, N, L)), 2): X = -1
  366.       GOSUB NUM: D(T, N, L) = VAL(C$)
  367.    END IF
  368. END IF
  369. IF A$ = "+" AND T < TMX THEN
  370.    GOSUB DCHECK: GOSUB CHECK
  371.    IF DCH = 0 AND CH > 0 THEN
  372.       DD$ = X$(T): T = T + 1: IF X$(T) = "" AND T > TT THEN X$(T) = DD$
  373.       GOSUB LAYOUT: GOSUB TICKET
  374.    END IF
  375. END IF
  376. IF TT < T THEN TT = T
  377. IF A$ = "-" AND T > 1 THEN GOSUB DCHECK: IF DCH = 0 THEN T = T - 1: GOSUB LAYOUT: GOSUB TICKET
  378. IF Z = 13 AND Z3 <> 2 THEN GOTO TNAME
  379.  
  380. IF A$ = "Q" THEN
  381.    LLL = L: NNN = N: COLOR 4: CLS : LOCATE 12, 15
  382.    PRINT "Are you sure you want to quit ?  (Y/N)": GOSUB CONFIRM
  383.    IF E$ = "N" THEN KA = 2: GOSUB LAYOUT: GOSUB TICKET: L = LLL: N = NNN: KA = 0: GOTO MAIN
  384.    IF E$ = "Y" THEN GOTO TEND
  385. END IF
  386.  
  387. IF A$ = "S" THEN GOTO TSORT
  388. IF A$ = S$ + "&" THEN GOTO TLOAD
  389. IF A$ = S$ + CHR$(31) THEN GOTO TSAVE
  390. IF A$ = S$ + "1" THEN
  391.    KA = 4: LLL = L: NNN = N: GOSUB CHECK
  392.    IF TT = 1 AND CH > 0 OR TT > 1 THEN
  393.       COLOR 4: CLS : LOCATE 12, 15
  394.       PRINT "All existing data will be lost. Continue ?  (Y/N)": GOSUB CONFIRM
  395.       IF E$ = "N" THEN KA = 2: GOSUB LAYOUT: GOSUB TICKET: L = LLL: N = NNN: KA = 0: GOTO MAIN
  396.    END IF: GOSUB TEDIT: KA = 0
  397. END IF
  398. IF A$ = "F" AND T > 1 THEN T = 1: GOSUB LAYOUT: GOSUB TICKET
  399. IF A$ = "L" AND T < TT THEN
  400.    TTT = T: T = TT: GOSUB CHECK
  401.    IF CH = 0 THEN T = T - 1
  402.    IF TTT <> T THEN GOSUB LAYOUT: GOSUB TICKET
  403. END IF
  404. IF A$ = "G" THEN GOTO TGOTO
  405. IF A$ = PT$ THEN GOSUB CHECK: IF CH > 0 THEN GOTO TPRT
  406. IF A$ = S$ + CHR$(23) THEN GOTO TINSERT
  407. IF A$ = S$ + "%" THEN GOTO TERASE
  408. IF A$ = S$ + "," THEN TZ = T: GOSUB TZERO: GOSUB LAYOUT
  409. IF A$ = S$ + "-" THEN TZ = 0: GOSUB TZERO: TA = 0: TB = T: GOSUB TCOPY: BEEP
  410. IF A$ = S$ + "0" THEN
  411.    TZ = T: GOSUB TZERO: TA = T: TB = 0: GOSUB TCOPY
  412.    GOSUB LAYOUT: GOSUB TICKET
  413. END IF
  414. IF A$ = S$ + CHR$(17) THEN
  415.    TZ = TMX + 1: GOSUB TZERO: TA = TZ: TB = 0: GOSUB TCOPY
  416.    TZ = 0: GOSUB TZERO: TA = 0: TB = T: GOSUB TCOPY
  417.    TZ = T: GOSUB TZERO: TA = T: TB = TMX + 1: GOSUB TCOPY
  418.    GOSUB LAYOUT: GOSUB TICKET
  419. END IF
  420. IF Z = 15 OR Z = 27 THEN
  421.    GOSUB DCHECK
  422.    IF DCH = 0 THEN
  423.       T = TT: GOSUB CHECK: IF CH = 0 THEN TT = TT - 1
  424.       COLOR 0, 0: GOTO OPTIONS
  425.    END IF
  426. END IF
  427.  
  428. IF Z3 = 2 AND Z = 13 THEN
  429.    KA = 4: LLL = L: NNN = N: GOSUB CHECK: LOCATE 1, 1
  430.    IF TT = 1 AND CH > 0 OR TT > 1 THEN
  431.       COLOR 4: CLS : LOCATE 12, 15
  432.       PRINT "Changing mode will clear all data. Continue ?  (Y/N)"
  433.       PRINT : GOSUB CONFIRM
  434.       IF E$ = "N" THEN KA = 2: GOSUB LAYOUT: GOSUB TICKET: L = LLL: N = NNN: KA = 0: GOTO MAIN
  435.    END IF: COLOR 7
  436.    PRINT SPACE$(18); "Select mode. ("; : COLOR 4: PRINT "P"; : COLOR 7
  437.    PRINT "ools/"; : COLOR 4: PRINT "L"; : COLOR 7: PRINT "otto/Power"; : COLOR 4
  438.    PRINT "B"; : COLOR 7: PRINT "all/"; : COLOR 4: PRINT "K"; : COLOR 7: PRINT "eno)"
  439.    DO: E$ = UCASE$(INKEY$)
  440.       IF E$ = "P" OR E$ = "L" OR E$ = "B" OR E$ = "K" THEN EXIT DO
  441.    LOOP
  442.    IF E$ = "L" THEN MD$ = "1"
  443.    IF E$ = "B" THEN MD$ = "2"
  444.    IF E$ = "P" THEN MD$ = "3"
  445.    IF E$ = "K" THEN MD$ = "4"
  446.    GOSUB TEDIT: KA = 0
  447. END IF
  448.  
  449. IF A$ = S$ + CHR$(19) THEN
  450.    LOCATE 23, 30: COLOR 4: PRINT " Creating ticket. "
  451.    GOSUB TTRND: GOSUB LAYOUT: GOSUB TICKET
  452. END IF
  453. IF A$ = PA$ THEN GOTO TPRINT
  454. IF Z = 7 THEN GOTO GMTT
  455. IF Z = 19 AND MD$ <> "4" THEN GOTO TSYSTEM
  456. IF Z = 18 THEN Y = -1: C = 7: NN = N: GOSUB RGAME: GOSUB LIN: N = NN
  457. IF Z = 26 THEN
  458.    TZ = T: LL = L: GOSUB GZERO: NN = N: Y = -1: C = 7: GOSUB LIN: N = NN
  459. END IF
  460. IF Z = 16 THEN
  461.    GCH = 0: FOR NN = 1 TO NX(T): IF D(T, NN, L) > 0 THEN GCH = 1
  462.    NEXT NN: IF GCH = 1 THEN GOTO TPRT
  463. END IF
  464. IF Z = 24 THEN
  465.    TZ = 0: LL = 0: GOSUB GZERO: LB = L: TA = 0: TB = T: NC = NX(T)
  466.    GOSUB GCOPY: BEEP
  467. END IF
  468. IF Z = 2 THEN
  469.    TZ = T: LL = L: GOSUB GZERO: TA = T: TB = 0: LB = 0: NC = NX(T)
  470.    GOSUB GCOPY: NN = N: Y = -1: C = 7: GOSUB LIN: N = NN
  471. END IF
  472. IF Z = 23 THEN
  473.    NC = NX(T): TA = T: LL = 0: TB = T: LB = L: GOSUB GCOPY: TZ = T: LL = L
  474.    GOSUB GZERO: TB = 0: LB = 0: GOSUB GCOPY: TZ = 0: LL = 0: GOSUB GZERO
  475.    TB = T: TA = 0: GOSUB GCOPY: TZ = T: GOSUB GZERO
  476.    NN = N: Y = -1: C = 7: GOSUB LIN: N = NN
  477. END IF
  478. IF Z = 11 THEN GOTO GERASE
  479. IF Z = 9 AND Z3 = 2 AND GT(T) < GPT THEN GOTO GINSERT
  480. REM *************************
  481. PSY:
  482. IF MD$ = "4" AND D(T, 11, L) < 3 THEN N = 11
  483. C = 30: C$ = "^": X = 1: Y = 0: GOSUB POSY: GOTO MAIN
  484. NUM:
  485. C = 7: Y = -1: IF MD$ = "2" AND N = NX(T) THEN C = 4
  486. IF MD$ = "4" AND N = NX(T) THEN C = 5
  487. POSY:
  488. LOCATE Y + (L * 2), X + (N * 3): COLOR C: PRINT C$; : RETURN
  489.  
  490. TLIMITS:
  491. IF NX(T) = 0 THEN NX(T) = 6
  492. IF MD$ = "1" OR MD$ = "2" THEN GDMX = 45
  493. IF MD$ = "3" THEN GDMX = 38
  494. IF MD$ = "4" THEN GDMX = 80: GPT = 5: NX(T) = 11
  495. IF MD$ = "1" OR MD$ = "3" THEN GPT = 12
  496. IF MD$ = "2" THEN GPT = 6
  497. IF GT(T) = 0 THEN GT(T) = GPT
  498. RETURN
  499.  
  500. LAYOUT:
  501. GOSUB TLIMITS
  502. COLOR 0, 0: CLS : FOR K = 1 TO GT(T): COLOR 5: PRINT CHR$(64 + K)
  503.     COLOR 3: PRINT " "; : FOR kk = 1 TO NX(T): QQ$ = " --"
  504.     IF MD$ = "2" OR MD$ = "4" THEN IF kk = NX(T) THEN QQ$ = " =="
  505.     PRINT QQ$; : NEXT kk
  506.     IF K < 12 THEN PRINT
  507. NEXT K: COLOR 2
  508. IF MD$ = "2" THEN GOSUB PBLAYOUT ELSE GOSUB TLAYOUT
  509. RETURN
  510.  
  511.  
  512. TLAYOUT:
  513. IF MD$ = "1" THEN MDN$ = "Lotto"
  514. IF MD$ = "3" THEN MDN$ = "Pools"
  515. IF MD$ = "4" THEN MDN$ = "Keno"
  516. LOCATE 1, 63: PRINT MDN$; " ticket"; T: COLOR 13: LOCATE 2, 64: PRINT "NAME: "; : COLOR 6: PRINT X$(T)
  517. SUSS = NX(T): GOSUB SYSUSS: LOCATE 3, 64: COLOR 13: PRINT "TYPE:"; : COLOR 6: PRINT SYS$
  518. LOCATE 4, 64: COLOR 13: PRINT "GAMES:"; : COLOR 6: PRINT GT(T)
  519. LOCATE 5, 63: COLOR 1, 15: PRINT "  KEY   COMMANDS  ": COLOR 6, 0
  520. LOCATE 6, 63: PRINT "+ "; : COLOR 2: PRINT "next "; : COLOR 6: PRINT "- "; : COLOR 2: PRINT "previous": COLOR 6
  521. LOCATE 7, 63: COLOR 6: PRINT "F "; : COLOR 2: PRINT "first "; : COLOR 6: PRINT "L "; : COLOR 2: PRINT "last"; : COLOR 6
  522. LOCATE 8, 63: PRINT "G "; : COLOR 2: PRINT "goto"; : COLOR 6: PRINT " Del "; : COLOR 2: PRINT "del # "; : COLOR 6
  523. LOCATE 9, 63: PRINT "S"; : COLOR 2: PRINT " sort "; : COLOR 6: PRINT "Enter "; : COLOR 2: PRINT "name ";
  524. LOCATE 10, 63: COLOR 6: PRINT "Arws "; : COLOR 2: PRINT "curs "; : COLOR 6: PRINT "Q "; : COLOR 2: PRINT "quit"
  525. IF Z4 < 2 THEN GOSUB ALT ELSE GOSUB CTRL
  526. RETURN
  527. ALT:
  528. LOCATE 12, 63: COLOR 15: PRINT "[ALT] KEYS:- ": COLOR 6: Z4 = 1
  529. LOCATE 13, 63: PRINT "L "; : COLOR 2: PRINT "load "; : COLOR 6: PRINT "S "; : COLOR 2: PRINT "save": COLOR 6
  530. LOCATE 14, 63: PRINT "N "; : COLOR 2: PRINT "new "; : COLOR 6: PRINT "A "; : COLOR 2: PRINT "print all"
  531. LOCATE 15, 63: COLOR 7: PRINT "Ticket:-": B2$ = "[Ctrl]": GOSUB FUNS: RETURN
  532. CTRL:
  533. LOCATE 12, 63: COLOR 15: PRINT "[CTRL] KEYS:-": COLOR 6: Z4 = 2
  534. LOCATE 13, 63: IF MD$ <> "4" THEN PRINT "S "; : COLOR 2: PRINT "system ";
  535. COLOR 6: PRINT "G "; : COLOR 2: PRINT "games": COLOR 6
  536. LOCATE 14, 63: PRINT "O "; : COLOR 2: PRINT "options "; : COLOR 6: PRINT "M "; : COLOR 2: PRINT "mode"
  537. LOCATE 15, 63: COLOR 7: PRINT "Game:-": B2$ = "[Alt]": GOSUB FUNS: RETURN
  538. FUNS:
  539. LOCATE 16, 63: COLOR 6: PRINT "X "; : COLOR 2: PRINT "copy "; : COLOR 6: PRINT "B "; : COLOR 2: PRINT "paste": COLOR 6
  540. LOCATE 17, 63: PRINT "W "; : COLOR 2: PRINT "swap "; : COLOR 6: PRINT "P "; : COLOR 2: PRINT "print": COLOR 6
  541. LOCATE 18, 63: PRINT "Z "; : COLOR 2: PRINT "zero "; : COLOR 6: PRINT "R "; : COLOR 2: PRINT "random": COLOR 6
  542. LOCATE 19, 63: PRINT "K "; : COLOR 2: PRINT "kill "; : COLOR 6: PRINT "I "; : COLOR 2: PRINT "insert"
  543. LOCATE 21, 63: COLOR 9: PRINT "Press "; : COLOR 14: PRINT B2$; : COLOR 9: PRINT " for "
  544. LOCATE 22, 63: PRINT " more fuctions.": RETURN
  545. BLANK:
  546. COLOR 0, 0: FOR B1 = 1 TO 4: LOCATE 11 + B1, 63: PRINT SPACE$(18): NEXT B1: RETURN
  547.  
  548. PBLAYOUT:
  549. LOCATE 14, 31: COLOR 0, 15: PRINT " PowerBall mode "
  550. PBX = 11: LOCATE 16, 34: COLOR 13, 0: PRINT "Ticket"; T
  551. LOCATE 16, PBX: PRINT "NAME: "; : COLOR 6: PRINT X$(T): SUSS = NX(T): GOSUB SYSUSS
  552. LOCATE 17, PBX: COLOR 13: PRINT "TYPE:"; : COLOR 6: PRINT SYS$
  553. LOCATE 18, PBX: COLOR 13: PRINT "GAMES:"; : COLOR 6: PRINT GT(T)
  554. LOCATE 19, PBX: COLOR 1, 15: PRINT "  KEY   COMMANDS  ": COLOR 6, 0
  555. LOCATE 20, PBX: PRINT "+ "; : COLOR 2: PRINT "next "; : COLOR 6: PRINT "- "; : COLOR 2: PRINT "previous": COLOR 6
  556. LOCATE 21, PBX: COLOR 6: PRINT "F "; : COLOR 2: PRINT "first "; : COLOR 6: PRINT "L "; : COLOR 2: PRINT "last"; : COLOR 6
  557. LOCATE 22, PBX: PRINT "G "; : COLOR 2: PRINT "goto"; : COLOR 6: PRINT " Del "; : COLOR 2: PRINT "del # "; : COLOR 6
  558. LOCATE 23, PBX: PRINT "S"; : COLOR 2: PRINT " sort "; : COLOR 6: PRINT "Enter "; : COLOR 2: PRINT "name ";
  559. LOCATE 24, PBX: COLOR 6: PRINT "Arws "; : COLOR 2: PRINT "curs "; : COLOR 6: PRINT "Q "; : COLOR 2: PRINT "quit";
  560.  
  561. LOCATE 17, PBX + 20: COLOR 15: PRINT "[ALT] KEYS:- ": COLOR 6
  562. LOCATE 18, PBX + 20: PRINT "L "; : COLOR 2: PRINT "load "; : COLOR 6: PRINT "S "; : COLOR 2: PRINT "save": COLOR 6
  563. LOCATE 19, PBX + 20: PRINT "N "; : COLOR 2: PRINT "new "; : COLOR 6: PRINT "A "; : COLOR 2: PRINT "print all"
  564. LOCATE 20, PBX + 20: COLOR 7: PRINT "Ticket:-"
  565. LOCATE 21, PBX + 20: COLOR 6: PRINT "X "; : COLOR 2: PRINT "copy "; : COLOR 6: PRINT "B "; : COLOR 2: PRINT "paste": COLOR 6
  566. LOCATE 22, PBX + 20: PRINT "W "; : COLOR 2: PRINT "swap "; : COLOR 6: PRINT "P "; : COLOR 2: PRINT "print": COLOR 6
  567. LOCATE 23, PBX + 20: PRINT "Z "; : COLOR 2: PRINT "zero "; : COLOR 6: PRINT "R "; : COLOR 2: PRINT "random": COLOR 6
  568. LOCATE 24, PBX + 20: PRINT "K "; : COLOR 2: PRINT "kill "; : COLOR 6: PRINT "I "; : COLOR 2: PRINT "insert";
  569.  
  570. LOCATE 17, PBX + 40: COLOR 15: PRINT "[CTRL] KEYS:-": COLOR 6
  571. LOCATE 18, PBX + 40: PRINT "S "; : COLOR 2: PRINT "system"; : COLOR 6: PRINT " G "; : COLOR 2: PRINT "games": COLOR 6
  572. LOCATE 19, PBX + 40: PRINT "O "; : COLOR 2: PRINT "options "; : COLOR 6: PRINT "M "; : COLOR 2: PRINT "mode"
  573. LOCATE 20, PBX + 40: COLOR 7: PRINT "Game:-"
  574. LOCATE 21, PBX + 40: COLOR 6: PRINT "X "; : COLOR 2: PRINT "copy "; : COLOR 6: PRINT "B "; : COLOR 2: PRINT "paste": COLOR 6
  575. LOCATE 22, PBX + 40: PRINT "W "; : COLOR 2: PRINT "swap "; : COLOR 6: PRINT "P "; : COLOR 2: PRINT "print": COLOR 6
  576. LOCATE 23, PBX + 40: PRINT "Z "; : COLOR 2: PRINT "zero "; : COLOR 6: PRINT "R "; : COLOR 2: PRINT "random": COLOR 6
  577. LOCATE 24, PBX + 40: PRINT "K "; : COLOR 2: PRINT "kill "; : COLOR 6: PRINT "I "; : COLOR 2: PRINT "insert";
  578. RETURN
  579.  
  580.  
  581. DCHECK:
  582. DCH = 0
  583. IF MD$ = "4" AND N = NX(T) THEN
  584.    M4 = D(T, 11, L): IF M4 = 0 AND A$ = "-" THEN RETURN
  585.    IF M4 < 3 THEN DCH = 1: DCH$ = "Invalid spot number.": GOSUB DCHPR
  586.    IF M4 > 2 AND M4 < 10 THEN
  587.       FOR NN = M4 + 1 TO 10: D(T, NN, L) = 0: NEXT
  588.       NN = N: Y = -1: GOSUB LIN: N = NN: Y = 0: X = 1
  589.    END IF
  590.    RETURN
  591. ELSE
  592.    IF D(T, N, L) = 0 THEN RETURN
  593. END IF
  594. IF MD$ = "2" AND N = NX(T) THEN RETURN
  595. NXT = NX(T): IF MD$ = "2" OR MD$ = "4" THEN NXT = NX(T) - 1
  596.  
  597. FOR NCH = 1 TO NXT: IF N <> NCH AND D(T, N, L) = D(T, NCH, L) THEN DCH = 1
  598. NEXT NCH
  599. IF DCH = 1 THEN DCH$ = "DUPLICATE NUMBER": GOSUB DCHPR
  600. RETURN
  601. DCHPR:
  602. BEEP: COLOR 4: CLS : LOCATE 12, 30: PRINT DCH$: GOSUB PAUSE: KA = 2: NNN = N
  603. LLL = L: GOSUB LAYOUT: GOSUB TICKET: N = NNN: L = LLL: KA = 0: RETURN
  604.  
  605. KEYDEF:
  606. S$ = CHR$(0): U$ = S$ + "H": D$ = S$ + "P": L$ = S$ + "K": R$ = S$ + "M"
  607. DL$ = S$ + "S": K(0) = 0: K(1) = 64: K(2) = 96: K(3) = 112: K(4) = 48
  608. K(5) = 16: K(6) = 32: K(7) = 80: PA$ = S$ + CHR$(30): PT$ = S$ + CHR$(25)
  609. FERROR:
  610. E$(0) = "<": E$(1) = ">": E$(2) = ".": E$(3) = CHR$(34): E$(4) = "|"
  611. E$(5) = "+": E$(6) = "=": E$(7) = ";": E$(8) = "?": E$(9) = "/": E$(10) = "["
  612. E$(11) = "]": E$(12) = ":": E$(13) = " ": E$(14) = "*": RETURN
  613.  
  614. TICKET:
  615. FOR L = 1 TO GT(T): GOSUB LIN: NEXT L: N = 1: L = 1: RETURN
  616. LIN:
  617. FOR N = 1 TO NX(T): X = 0: IF D(T, N, L) > 9 THEN X = -1
  618.    C$ = STR$(D(T, N, L)): IF D(T, N, L) = 0 THEN C$ = "   "
  619.    GOSUB NUM
  620. NEXT N: RETURN
  621. CHECK:
  622. CH = 0: NN = N: LL = L: FOR L = 1 TO GT(T)
  623.    FOR N = 1 TO NX(T): IF D(T, N, L) > CH THEN CH = D(T, N, L)
  624. NEXT N: NEXT L: N = NN: L = LL: RETURN
  625. TNAME:
  626. NNN = N: LLL = L: COLOR 2: CLS
  627. TNM:
  628. INPUT "Enter name "; X$(T)
  629. IF LEN(X$(T)) > 10 THEN BEEP: COLOR 4: PRINT : PRINT "No more than 10 characters long.": COLOR 2: PRINT : GOTO TNM
  630. GOSUB LAYOUT: GOSUB TICKET: N = NNN: L = LLL: GOTO MAIN
  631. GMTT:
  632. COLOR 2: CLS : NNN = N: LLL = L
  633. GMT:
  634. INPUT "Enter number of games "; GGG
  635. GPT$ = "No more than" + STR$(GPT) + " games per ticket."
  636. IF GGG < 1 THEN GOSUB LAYOUT: GOSUB TICKET: N = NNN: L = LLL: GOTO MAIN
  637. IF GGG > GPT THEN BEEP: COLOR 4: PRINT : PRINT GPT$: COLOR 2: PRINT : GOTO GMT
  638. TZ = T: GOSUB TZERO: L = 1: N = 1: GT(T) = GGG: GOSUB LAYOUT: GOTO MAIN
  639. TSYSTEM:
  640. COLOR 2: CLS : LLL = L: NNN = N
  641. TSYS:
  642. INPUT "Enter ticket system "; NXX
  643. IF MD$ = "1" OR MD$ = "3" THEN NXMN = 4: NXMX = 20
  644. IF MD$ = "2" THEN NXMN = 3: NXMX = 24
  645. NX$ = "Systems are no less than" + STR$(NXMN) + " and no more than" + STR$(NXMX)
  646. IF NXX < 1 THEN GOSUB LAYOUT: GOSUB TICKET: L = LLL: N = NNN: GOTO MAIN
  647. IF NXX < NXMN OR NXX > NXMX THEN BEEP: COLOR 4: PRINT : PRINT NX$: PRINT : COLOR 2: GOTO TSYS
  648. IF MD$ = "2" THEN NXX = NXX + 1
  649. TZ = T: GOSUB TZERO: L = 1: N = 1: NX(T) = NXX: GOSUB LAYOUT: GOTO MAIN
  650. TSAVE:
  651. TTT = T: T = TT: GOSUB CHECK: TS = TT: IF CH = 0 THEN TS = TT - 1
  652. T = TTT: GOSUB DCHECK: IF DCH = 1 OR TS = 0 THEN KA = 0: GOTO MAIN
  653. TSV:
  654. SV = 1: FL$ = " Save as default data file `LC-DEF.DAT' (Y/N/Esc)"
  655. N$ = "LC-DEF.DAT": GOSUB FNAME
  656. IF N$ = "" THEN
  657.    IF KA = 2 THEN GOTO TL1
  658.    GOTO tse
  659. END IF
  660. GOSUB FCHECK: IF E$ = "N" THEN GOTO TSV
  661. tsv2:
  662. CLS : LOCATE 12, 35: PRINT "SAVING": OPEN N$ FOR OUTPUT AS #1: PRINT #1, FCH2$
  663. WRITE #1, VAL(MD$), TS: FOR T = 1 TO TS: PRINT #1, X$(T); ","; : WRITE #1, GT(T), NX(T)
  664. FOR L = 1 TO GT(T): FOR N = 1 TO NX(T): WRITE #1, D(T, N, L)
  665. NEXT N: NEXT L: NEXT T: CLOSE 1: T = TTT: BEEP: IF KA = 2 THEN GOTO TL1
  666. tse:
  667. GOSUB LAYOUT: GOSUB TICKET: SV = 0: GOTO MAIN
  668. TLOAD:
  669. LLL = L: NNN = N: KA = 2
  670. IF TT = 1 THEN GOSUB CHECK: IF CH = 0 THEN GOTO TL1
  671. COLOR 4: CLS : LOCATE 12, 15
  672. PRINT "Shall I save existing data before loading ?  (Y/N)"
  673. GOSUB CONFIRM: IF E$ = "Y" THEN GOTO TSAVE
  674. TL1:
  675. SV = 0: FL$ = " Load default data file `LC-DEF.DAT' (Y/N/Esc)"
  676. N$ = "LC-DEF.DAT": GOSUB FNAME
  677. IF N$ = "" THEN
  678.    IF V = 76 THEN RETURN
  679.    GOSUB LAYOUT: GOSUB TICKET: L = LLL: N = NNN: KA = 0: GOTO MAIN
  680. END IF
  681. TLD:
  682. COLOR 4: CLS : LOCATE 12, 30: PRINT "LOADING DATA FILE"
  683. STLD:
  684. DFC$ = "": OPEN N$ FOR INPUT AS #1: INPUT #1, DFC$
  685. IF DFC$ <> FCH$ AND DFC$ <> FCH2$ THEN
  686.    BEEP: N$ = "": IF ST = 1 THEN ST = 2
  687.    CLS : COLOR 20: LOCATE 12, 25: PRINT "Not a LOTTO CHECK data file....!!"
  688.    GOSUB PAUSE: CLOSE 1: IF ST = 2 OR V = 76 THEN KA = 0: RETURN
  689.    GOSUB LAYOUT: GOSUB TICKET: L = LLL: N = NNN: KA = 0: GOTO MAIN
  690. END IF: IF ST = 0 THEN GOSUB TEDIT
  691. IF DFC$ = FCH$ THEN MD$ = "1" ELSE INPUT #1, MD$
  692. GOSUB TLIMITS
  693. INPUT #1, TT: FOR T = 1 TO TT: INPUT #1, X$(T), GT(T), NX(T)
  694. FOR L = 1 TO GT(T): FOR N = 1 TO NX(T): INPUT #1, D(T, N, L): NEXT N: NEXT L
  695. NEXT T: CLOSE 1: BEEP: KA = 0: IF V = 76 OR ST = 1 THEN RETURN
  696. T = 1: GOSUB LAYOUT: GOSUB TICKET: GOTO MAIN
  697. FNAME:
  698. COLOR 7: CLS : PRINT FL$
  699. DO: NM$ = UCASE$(INKEY$): IF NM$ = "Y" THEN RETURN
  700.     IF NM$ = CHR$(27) THEN N$ = "": RETURN
  701.     IF NM$ = "N" THEN EXIT DO
  702. LOOP: DR$ = "DAT": IF G$ = "S" THEN DR$ = "TXT"
  703. FNM:
  704. PRINT : SHELL "DIR *." + DR$ + " /B"
  705. COLOR 6: PRINT : PRINT "  Enter nothing to escape."
  706. COLOR 7: INPUT " Enter file name (No extension)"; NM$
  707. FX = 0: FY = 1: FS = 0: COLOR 4: PRINT : FL = LEN(NM$)
  708. IF MID$(NM$, 2, 1) = ":" THEN FY = 3
  709. FOR ER = 0 TO 14
  710.     IF INSTR(FY, NM$, E$(ER)) > 0 OR MID$(NM$, 1, 1) = E$(ER) THEN
  711.        BEEP: COLOR 14: PRINT E$(ER); : COLOR 4
  712.        PRINT "  Invalid character in path or file name.": GOTO FNM
  713.     END IF
  714. NEXT ER
  715. DO: IF FX > 0 THEN FY = FX + 1
  716.  FX = INSTR(FY, NM$, "\"): FZ = FX - FY: FS = FS + 1
  717.  IF FX = 0 THEN
  718.    FZ = FL - FY + 1: IF FZ > 8 THEN PRINT "File name "; : EXIT DO
  719.    IF FZ = 0 THEN
  720.       IF FL > 0 THEN BEEP: PRINT "What.!! Path with no file name..!": GOTO FNM
  721.       N$ = "": RETURN
  722.    END IF
  723.    N$ = NM$ + ".DAT": IF G$ = "S" THEN N$ = NM$ + ".TXT"
  724.    RETURN
  725.  END IF: IF FZ > 8 THEN PRINT "Directory name"; FS; : EXIT DO
  726. LOOP: PRINT "should be no more than 8 characters long.": BEEP: GOTO FNM
  727. FCHECK:
  728. COLOR 4: OPEN N$ FOR INPUT AS #1: CLOSE 1: PRINT
  729. PRINT " File already exists. Shall I overwrite ? (Y/N)"
  730. GOSUB CONFIRM: RETURN
  731. TGOTO:
  732. GOSUB DCHECK: IF DCH = 1 THEN GOTO MAIN
  733. COLOR 7: CLS : TTT = T
  734. TGOT:
  735. COLOR 7: INPUT "  Goto ticket number "; T
  736. IF T < 1 THEN T = TTT
  737. IF T > TT THEN BEEP: COLOR 4: PRINT : PRINT "Ticket does not exist.": PRINT : COLOR 7: GOTO TGOT
  738. IF Z$ = "G" THEN RETURN
  739. GOSUB LAYOUT: GOSUB TICKET: GOTO MAIN
  740. TSORT:
  741. GOSUB DCHECK: IF DCH = 1 THEN GOTO MAIN
  742. TTT = T: T = TT: GOSUB CHECK: TT2 = TT: IF CH = 0 THEN TT2 = TT - 1
  743. COLOR 7: CLS : LOCATE 12, 30: PRINT "Sorting all tickets."
  744. FOR T = 1 TO TT2
  745.    FOR L = 1 TO GT(T)
  746.       FOR N = 1 TO NX(T): R(N) = D(T, N, L): NEXT N
  747.       GOSUB RSORT
  748.    NEXT L
  749. NEXT T: T = TTT: BEEP: GOSUB LAYOUT: GOSUB TICKET: GOTO MAIN
  750. RSORT:
  751. NXT = NX(T): IF MD$ = "4" THEN NXT = D(T, 11, L)
  752. IF MD$ = "2" THEN NXT = NX(T) - 1: D(T, NX(T), L) = R(NX(T)): R(NX(T)) = 0
  753. FOR N = 1 TO NXT: NX = NXT - N + 1: D(T, NX, L) = 0: FOR S = 1 TO NXT
  754.      IF R(S) > D(T, NX, L) THEN D(T, NX, L) = R(S): CL = S
  755. NEXT S: R(CL) = 0: NEXT N: RETURN
  756. GINSERT:
  757. LLL = L: NNN = N: TA = T: TB = T: TZ = T: NC = NX(T): GT(T) = GT(T) + 1: GL = GT(T) - L - 1
  758. FOR GE = 0 TO GL: LL = GT(T) - GE: LB = LL - 1: GOSUB GCOPY: NEXT GE: LL = LLL
  759. GOSUB GZERO: GOSUB LAYOUT: GOSUB TICKET: L = LLL: N = NNN: GOTO MAIN
  760. TINSERT:
  761. GOSUB DCHECK: GOSUB CHECK: IF CH = 0 OR DCH = 1 THEN GOTO MAIN
  762. TTT = T: T = TT: GOSUB CHECK: T = TTT: IF TT = TMX AND CH > 0 THEN GOTO MAIN
  763. LOCATE 23, 30: COLOR 4: PRINT "Inserting ticket.": IF CH > 0 THEN TT = TT + 1
  764. TL = TT - T - 1: FOR TI = 0 TO TL: TA = TT - TI: TB = TA - 1: GOSUB TCOPY: NEXT TI
  765. TZ = T: GOSUB TZERO: L = 1: N = 1: GOSUB LAYOUT: BEEP: GOTO MAIN
  766. TCOPY:
  767. X$(TA) = X$(TB): GT(TA) = GT(TB): NX(TA) = NX(TB): NC = NX(TA)
  768. FOR LL = 1 TO GT(TA): LB = LL: GOSUB GCOPY: NEXT LL: RETURN
  769. GCOPY:
  770. FOR NN = 1 TO NC: D(TA, NN, LL) = D(TB, NN, LB): NEXT NN: RETURN
  771. TZERO:
  772. X$(TZ) = "": FOR LL = 1 TO GT(TZ): GOSUB GZERO: NEXT LL: RETURN
  773. GZERO:
  774. NZ = NX(TZ): IF TZ = 0 AND LL = 0 THEN NZ = 25
  775. FOR NN = 1 TO NZ: D(TZ, NN, LL) = 0: NEXT NN: RETURN
  776. TERASE:
  777. GOSUB CHECK: IF T = TT AND CH = 0 THEN GOTO MAIN
  778. LOCATE 23, 30: COLOR 4: PRINT "Erasing ticket."
  779. IF T < TT THEN
  780.    TL = TT - T - 1: FOR TE = 0 TO TL: TA = T + TE: TB = TA + 1: GOSUB TCOPY: NEXT TE
  781. END IF
  782. TZ = TT: GOSUB TZERO: TT = TT - 1: GOSUB LAYOUT: GOSUB TICKET: BEEP: GOTO MAIN
  783. GERASE:
  784. IF GT(T) < 2 THEN GOTO TERASE
  785. LLL = L: NNN = N: TA = T: TB = T: TZ = T: NC = NX(T)
  786. IF L < GT(T) THEN
  787.    GL = GT(T) - L - 1: FOR GE = 0 TO GL: LL = L + GE: LB = LL + 1: GOSUB GCOPY: NEXT GE
  788. END IF
  789. LL = GT(T): GOSUB GZERO: GT(T) = GT(T) - 1: GOSUB LAYOUT: GOSUB TICKET
  790. L = LLL: IF L > GT(T) THEN L = GT(T)
  791. N = NNN: GOTO MAIN
  792. TPRINT:
  793. TTT = T: T = TT: GOSUB CHECK: IF CH = 0 THEN TT = TT - 1
  794. IF TT = 0 THEN GOTO MAIN
  795. TPRT:
  796. NNN = N: LLL = L: OPEN PR$ FOR OUTPUT AS 1
  797. IF A$ = PT$ THEN GOSUB TPR: GOTO PREND
  798. IF GCH = 1 THEN PRINT #1, "": GOSUB GPR: GCH = 0: GOTO PREND
  799. FOR T = 1 TO TT: GOSUB TPR: NEXT T: T = TTT
  800. PREND:
  801. CLOSE #1: L = LLL: N = NNN: BEEP: GOTO MAIN
  802. TPR:
  803. SUSS = NX(T): GOSUB SYSUSS
  804. PRINT #1, X$(T); SYS$; " ticket"; T; LF$; : SP$ = " ": IF NX(T) = 20 THEN SP$ = ""
  805. FOR L = 1 TO GT(T): GOSUB GPR: NEXT L: PRINT #1, LF$; : RETURN
  806. GPR:
  807. PRINT #1, CHR$(64 + L); "  ";
  808. FOR N = 1 TO NX(T)
  809.    PP$ = STR$(D(T, N, L)): IF D(T, N, L) = 0 THEN PP$ = "   "
  810.    SS$ = "": IF D(T, N, L) > 0 AND D(T, N, L) < 10 THEN SS$ = " "
  811.    PRINT #1, SS$; PP$; SP$;
  812.    IF MD$ = "4" AND N = NX(T) - 1 THEN PRINT #1, "  Spot";
  813.    IF MD$ = "2" AND N = NX(T) - 1 THEN PRINT #1, "  PB";
  814. NEXT N: PRINT #1, "": RETURN
  815. CONFIRM:
  816. BEEP: DO: E$ = UCASE$(INKEY$): IF E$ = "Y" OR E$ = "N" THEN RETURN
  817. LOOP
  818. PAUSE:
  819. PP$ = CHR$(13): COLOR 15: LOCATE 23, 27: PRINT "PRESS ENTER TO CONTINUE."
  820. PS1:
  821. DO: IF INKEY$ = PP$ THEN RETURN
  822. LOOP
  823. TERROR:
  824. IF ERR = 53 AND SV = 1 THEN RESUME tsv2
  825. COLOR 4: BEEP: CLS : LOCATE 12, 30
  826. IF ERR = 53 THEN
  827.    PRINT "Data file not found.": GOSUB PAUSE
  828.    IF ST = 1 THEN P$ = "O": RESUME OPTIONS
  829.    RESUME OPT
  830. END IF
  831. IF ERR = 64 OR ERR = 76 THEN
  832.    IF ERR = 64 THEN PRINT "Bad file name." ELSE PRINT "Path not found."
  833.    GOSUB PAUSE: IF SV = 1 THEN RESUME TSV
  834.    RESUME OPT
  835. END IF
  836. IF ERDEV = 10 THEN
  837.    CLOSE #1: PRINT "PRINTER NOT ACTIVE !!": GOSUB PAUSE
  838.    IF Z$ = "P" THEN RESUME TTSHOW
  839.    GOSUB LAYOUT: GOSUB TICKET: L = LLL: N = NNN: RESUME MAIN
  840. END IF
  841. PRINT "ERROR No"; ERR; "NOT DEFINED": END
  842. OPT:
  843. IF V = 76 THEN
  844.    GOSUB TL1: IF N$ <> "" THEN GOTO SUSS
  845.    GOTO OPTIONS
  846. ELSE
  847.    GOTO TL1
  848. END IF
  849. TEND:
  850. WIDTH 80: COLOR 7, 0: POKE 1047, KF: DEF SEG : CLS : END
  851. ABOUT:
  852. WIDTH 80: GOSUB TITLE
  853. PRINT "  This version of Lotto Check both for the Amiga and IBM, was written on an"
  854. PRINT "  Amiga 1200 equiped with a Blizzard 68060 board. The IBM version was ported"
  855. PRINT "  from the Amiga version using `PCx' the best & fastest IBM emulator I have"
  856. PRINT "  have ever seen for the Amiga, which was written by Jim Drew & MicroCode"
  857. PRINT "  Solutions. Thanks Jim & MicroCode. Looking forward to future versions of"
  858. PRINT "  this excellent program. Thanks to"; : COLOR 2: PRINT "  Richard Gormley"; : COLOR 7: PRINT " for scrutinizing,"
  859. PRINT "  bug testing and program suggestions. Thanks to "; : COLOR 2: PRINT "Warren Rizzi"; : COLOR 7: PRINT " for the icon"
  860. PRINT "  on the Amiga version."
  861. PRINT SPACE$(25); : COLOR 20: PRINT "This program is `ShareWare'": COLOR 7
  862. PRINT "  If you try this program and wish to continue to use it, you may do so"
  863. PRINT "  provided you do following as payment:-": COLOR 15
  864. PRINT "  * Send a disk with some PD on it, preferably AMIGA PD but IBM PD will"
  865. PRINT "    be accepted."
  866. PRINT "  * Let me know whether you are using the AMIGA or IBM version, the version"
  867. PRINT "    number, tell what you think of it and if you have found bugs let me"
  868. PRINT "    know what they are.": COLOR 7
  869. PRINT "  Payment should be sent to:"; : COLOR 6: PRINT "   LORRY"
  870. PRINT "                               5 Rankin street"
  871. PRINT "                               Altona, Victoria,"
  872. PRINT "                               Australia, 3018.": COLOR 15
  873. PRINT SPACE$(27); "Press space to continue": PP$ = " ": GOSUB PS1: GOSUB TITLE
  874. PRINT "  I dont think that I am asking for too much. If you dont comply to the"
  875. PRINT "  ShareWare requirements then you are a very naughty immoral person and I"
  876. PRINT "  hope your hard disk is wiped by a virus or your computer mysteriously"
  877. PRINT "  self combusts.": PRINT : PRINT : COLOR 6
  878. PRINT "  This program may be freely distributed on PD libraries."
  879. COLOR 4: PRINT : PRINT : PRINT "  LEGAL CRAP:": COLOR 7
  880. PRINT "  Although I have never known this program to fail I can not take any"
  881. PRINT "  responsibility for failure of this program or for human data entry error."
  882. GOSUB PAUSE: GOTO OPTIONS
  883.  
  884.